home *** CD-ROM | disk | FTP | other *** search
- /* Getting and setting various file attributes (position, length, lock, etc.)
- 94/01/10 aih FileSize works even on closed files
- 93/10/14 aih removed functions for locking/unlocking a file
- */
-
- #include <limits.h>
- #include <string.h>
- #include "MemoryLib.h"
- #include "StringLib.h"
- #include "FileLib.h"
-
- /* this is just like GetFPos */
- FilePosType FilePosition(FileType *fp)
- {
- FilePosType position;
- require(FileValid(fp));
- require(fp->ref != FILE_CLOSED);
- FailOSErr(GetFPos(fp->ref, &position));
- return(position);
- }
-
- /* this is just like SetFPos */
- void FileSeek(FileType *fp, FileSeekType seek, FilePosType position)
- {
- require(FileValid(fp));
- require(fp->ref != FILE_CLOSED);
- require(position >= 0);
- FailOSErr(SetFPos(fp->ref, seek, position));
- }
-
- /* this is just like GetEOF, but works also on closed files */
- FilePosType FileSize(FileType *fp)
- {
- FilePosType size;
- CInfoPBRec catalog;
-
- require(FileValid(fp));
- require(FileExists(fp));
- if (fp->ref != FILE_CLOSED)
- FailOSErr(GetEOF(fp->ref, &size));
- else {
- FileCatalog(fp, &catalog);
- size = catalog.hFileInfo.ioFlLgLen;
- }
- return(size);
- }
-
- /* this is just like SetEOF */
- void FileResize(FileType *fp, FilePosType size)
- {
- require(FileValid(fp));
- require(fp->ref != FILE_CLOSED);
- require(size >= 0);
- FailOSErr(SetEOF(fp->ref, size));
- }
-